{
 "cells": [
  {
   "cell_type": "markdown",
   "source": [
    "# Getting started with Qiskit and Quantinuum on Azure Quantum\n",
    "\n",
    "This notebook shows how to send a basic quantum circuit expressed using the [Qiskit library](https://github.com/QISKit/qiskit-terra) to a Quantinuum target via the Azure Quantum service."
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "First, install `azure-quantum` with the `qiskit` dependencies:"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "source": [
    "# To install the Azure Quantum client package with support for\n",
    "# Qiskit, uncomment and run the line below:\n",
    "#\n",
    "# !pip install azure-quantum[qiskit]==0.19.2109.165653 --quiet\n",
    "#\n",
    "# We also recommend installing matplotlib, if you don't have it installed already:\n",
    "# !pip install matplotlib --quiet"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "And import the required packages for this sample:"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "source": [
    "from qiskit import QuantumCircuit\n",
    "from qiskit.visualization import plot_histogram\n",
    "from qiskit.tools.monitor import job_monitor\n",
    "from azure.quantum.qiskit import AzureQuantumProvider"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "## Connecting to the Azure Quantum service\n",
    "\n",
    "To connect to the Azure Quantum service, find the resource ID and location of your Workspace from the Azure portal here: https://portal.azure.com. Navigate to your Azure Quantum workspace and copy the values from the header.\n",
    "\n",
    "<img src=\"../azure-quantum-resource-id.png\" alt=\"How to retrieve the resource ID and location from an Azure Quantum workspace\">"
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "source": [
    "# Enter your workspace details here\n",
    "# Find your resource ID and location via portal.azure.com\n",
    "provider = AzureQuantumProvider(\n",
    "  resource_id=\"\",\n",
    "  location=\"\"\n",
    ")"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "Use `provider.backends` to see what targets are currently available. Running this method will trigger authentication to your Microsoft account, if you're not already logged in."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "source": [
    "print([backend.name() for backend in provider.backends()])"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "['ionq.simulator', 'ionq.qpu', 'quantinuum.qpu.h1-1', 'quantinuum.sim.h1-1sc', 'quantinuum.sim.h1-1e']\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Run a simple circuit on the Quantinuum API validator\n",
    "\n",
    "Note that this backend will always return 0 on measurement."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "source": [
    "# Get Quantinuum's API validator backend:\n",
    "apival_backend = provider.get_backend(\"quantinuum.sim.h1-1sc\")"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "markdown",
   "source": [
    "Let's create a simple Qiskit circuit to run.\n",
    "\n",
    "This notebook assumes some familiarity with Qiskit. To read more about Qiskit, review the [Qiskit documentation](https://qiskit.org/documentation/intro_tutorial1.html)."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "source": [
    "# Create a Quantum Circuit acting on the q register\n",
    "circuit = QuantumCircuit(3, 3)\n",
    "circuit.name = \"Qiskit Sample - 3-qubit GHZ circuit\"\n",
    "circuit.h(0)\n",
    "circuit.cx(0, 1)\n",
    "circuit.cx(1, 2)\n",
    "circuit.measure([0,1,2], [0, 1, 2])\n",
    "\n",
    "# Print out the circuit\n",
    "circuit.draw()"
   ],
   "outputs": [
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "     ┌───┐          ┌─┐      \n",
       "q_0: ┤ H ├──■───────┤M├──────\n",
       "     └───┘┌─┴─┐     └╥┘┌─┐   \n",
       "q_1: ─────┤ X ├──■───╫─┤M├───\n",
       "          └───┘┌─┴─┐ ║ └╥┘┌─┐\n",
       "q_2: ──────────┤ X ├─╫──╫─┤M├\n",
       "               └───┘ ║  ║ └╥┘\n",
       "c: 3/════════════════╩══╩══╩═\n",
       "                     0  1  2 "
      ],
      "text/html": [
       "<pre style=\"word-wrap: normal;white-space: pre;background: #fff0;line-height: 1.1;font-family: &quot;Courier New&quot;,Courier,monospace\">     ┌───┐          ┌─┐      \n",
       "q_0: ┤ H ├──■───────┤M├──────\n",
       "     └───┘┌─┴─┐     └╥┘┌─┐   \n",
       "q_1: ─────┤ X ├──■───╫─┤M├───\n",
       "          └───┘┌─┴─┐ ║ └╥┘┌─┐\n",
       "q_2: ──────────┤ X ├─╫──╫─┤M├\n",
       "               └───┘ ║  ║ └╥┘\n",
       "c: 3/════════════════╩══╩══╩═\n",
       "                     0  1  2 </pre>"
      ]
     },
     "metadata": {},
     "execution_count": 5
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "source": [
    "# Submit the circuit to run on Azure Quantum\n",
    "job = apival_backend.run(circuit, count=1024)\n",
    "job_id = job.id()\n",
    "print(\"Job id\", job_id)\n",
    "\n",
    "# Monitor job progress and wait until complete:\n",
    "job_monitor(job)\n",
    "\n",
    "# Get the job results (this method also waits for the Job to complete):\n",
    "result = job.result()\n",
    "print(result)\n",
    "# The histogram returned by the results can be sparse, so here we add any of the missing bitstring labels.\n",
    "counts = {format(n, \"03b\"): 0 for n in range(8)}\n",
    "counts.update(result.get_counts(circuit))\n",
    "print(counts)\n",
    "plot_histogram(counts)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Job id 3e7decf2-fc93-11eb-8301-00155df03c4e\n",
      "Job Status: job has successfully run\n",
      "Result(backend_name='quantinuum.sim.h1-1sc', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='3e7decf2-fc93-11eb-8301-00155df03c4e', success=True, results=[ExperimentResult(shots=1024, success=True, meas_level=2, data=ExperimentResultData(counts={'000': 1024}, probabilities={'000': 1.0}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit'))])\n",
      "{'000': 1024, '001': 0, '010': 0, '011': 0, '100': 0, '101': 0, '110': 0, '111': 0}\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAc0AAAFDCAYAAABY/1W1AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjQuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/MnkTPAAAACXBIWXMAAAsTAAALEwEAmpwYAAAp6UlEQVR4nO3dfXxU5Z338c/PIBELVMACkqCAIBbQaIyNsRFo71Kq9ratuj6slmVtcbXWx7u7rbvWla7a1rbeurWule3Wpz5Y7arb+oRrC4jG0JAWBbpABSyJAgoooBgl/vaP6wSn4yS5hjycGfi+X695kTnnzMlvZsJ851znuq5j7o6IiIh0bp+0CxARESkWCk0REZFICk0REZFICk0REZFICk0REZFICk0REZFIfdIuIE0HHnigjxo1Ku0yRESkgCxevPhVd/9QrnV7dWiOGjWKhoaGtMsQEZECYmYvtrdOzbMiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJoiIiKRFJpddN555zF06FAmTZqUc727c8kllzB27FiOPPJIGhsbd6278847GTduHOPGjePOO+/ctXzx4sUcccQRjB07lksuuQR37/HnISIinVNodtHMmTN57LHH2l3/6KOPsmrVKlatWsXtt9/OhRdeCMDmzZuZPXs29fX1LFq0iNmzZ7NlyxYALrzwQubMmbPrcR3tX0REeo9Cs4smT57M4MGD213/0EMPMWPGDMyM4447jtdee42XX36Zxx9/nGnTpjF48GAGDRrEtGnTeOyxx3j55ZfZunUrxx13HGbGjBkzePDBB3vvCYmISLsUmj2submZkSNH7rpfXl5Oc3Nzh8vLy8vft1xERNKn0BQREYmk0OxhZWVlrFu3btf9pqYmysrKOlze1NT0vuUiIpI+hWYPO+WUU7jrrrtwd5599lk++MEPctBBBzF9+nTmzp3Lli1b2LJlC3PnzmX69OkcdNBBDBw4kGeffRZ356677uIzn/lM2k9DRESAPmkXUOzOPvts5s2bx6uvvkp5eTmzZ8/mnXfeAeCCCy7gpJNO4pFHHmHs2LHsv//+/PjHPwZg8ODBfP3rX+fYY48F4Oqrr97VoejWW29l5syZ7NixgxNPPJETTzwxnScnIiJ/wfbmMYBVVVXe0NCQdhkiIlJAzGyxu1flWqfmWRERkUgKTRERkUgKTRERkUgKTRERkUgKTRERkUgKTRERkUgKTRERkUgKTRERkUi9GppmNtnM/svMms3MzWxmxGOOMLP5ZrYjedzVZmZZ25xmZsvNrCX593M99iRERGSv1dtHmv2BpcClwI7ONjazgcATwAbg2ORxfw9ckbFNDXAv8BPgqOTf+8ysuptrFxGRvVyvzj3r7o8AjwCY2R0RDzkH2B/4G3ffASw1s8OBK8zsRg9zAF4G/Nbdr0sec52ZfSxZfnb3PgMREdmbFfo5zRrgqSQw2zwOjABGZWwzN+txjwPH93h1IiKyVyn0q5wMB5qylm3IWLcm+XdDjm2G59qhmZ0PnA8wYsQI5s2bB8CYMWMYMGAAS5YsAWDIkCFMnDiRBQsWANCnTx9qa2tpbGxk69atAFRVVbFhwwa+9atDu/IcO3XLhS3U1dUB0K9fP6qrq6mvr2fHjvBdoqamhjVr1rB+/XoAJkyYQGtrKytWrADCNT3Ly8upr68HoH///lRVVVFXV0dLSwsAtbW1rFy5ko0bNwIwadIkWlpaWLVqFQAjR45k2LBhtE1wP3DgQCorK1m4cCE7d+4EYPLkySxbtoxNmzYBUFFRwbZt21i9ejUAo0aNYvDgwTQ2NgIwaNAgKioqmD9/Pu6OmTFlyhSWLFnCli1bAKisrGTz5s2sXbsW6Nr71Hb90nHjxlFaWsrSpUsBGDp0KIcddhgLFy4EoLS0lJqaGhoaGti+fTsA1dXVNDU10dzcDMD48eMpKSlh+fLlAAwfPpzRo0frfdL7pPdpD3ifOpLaVU7MbDvwZXe/o4Nt5gJN7n5exrKDgReB4929zszeBr7o7ndlbDMDmOPupR3V0F1XOZl1U5d30aE5l/Xs/kVE5D3FfJWT9cCwrGXDMtZ1tM16REREulGhh2YdcIKZ7ZexbBrwErA2Y5tpWY+bBjzT49WJiMhepbfHafY3s6PM7Kjkdx+c3D84Wf9NM3sy4yE/Bd4E7jCzSWZ2KvA1oK3nLMDNwMfN7GtmdriZXQl8DLipl56WiIjsJXr7SLMK+H1y6wfMTn7+RrL+IGBXrxp3f51w1DgCaAB+AHwPuDFjm2eAs4CZwHPADOBMd6/v2aciIiJ7m94epzkPsA7Wz8yx7Hlgcif7vR+4v4vliYiIdKjQz2mKiIgUDIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIJIWmiIhIpLxC08z2MbN9Mu4PN7MvmtlHu780ERGRwpLvkebDwMUAZtYfaAC+A8wzsxndXJuIiEhByTc0q4DfJD+fCmwFhgKzgK/E7MDMvmRma8zsLTNbbGYndLDtHWbmOW5vZGwztZ1tDs/zuYmIiHQo39DsD7yW/PxJ4AF3f4cQpId29mAzOxO4GbgeOBp4BnjUzA5u5yGXAgdl3VYDv8ix7cSs7VZFPSMREZFI+Ybmn4GPmtkHgOnAE8nywcCbEY+/ArjD3ee4+x/d/WLgZeDCXBu7++vuvr7tRgjmMcCcHJtvzNzW3VvzfG4iIiIdyjc0bwTuBpqAZmBBsnwy8HxHDzSzvsAxwNysVXOB4yN//yxgmbs/k2Ndg5m9bGZPmtnHIvcnIiISrU8+G7v7D81sMTASeMLd301WvQB8vZOHHwiUABuylm8APtHZ7zazDwJnAFdmrWo7Uv0d0Bf4PPCkmU1x96dy7Od84HyAESNGMG/ePADGjBnDgAEDWLJkCQBDhgxh4sSJLFgQvhf06dOH2tpaGhsb2bp1KwBVVVVs2LCBiJbpLmlpaaGurg6Afv36UV1dTX19PTt27ACgpqaGNWvWsH79egAmTJhAa2srK1asAKCsrIzy8nLq6+sB6N+/P1VVVdTV1dHS0gJAbW0tK1euZOPGjQBMmjSJlpYWVq0KrdwjR45k2LBhNDQ0ADBw4EAqKytZuHAhO3fuBGDy5MksW7aMTZs2AVBRUcG2bdtYvXo1AKNGjWLw4ME0NjYCMGjQICoqKpg/fz7ujpkxZcoUlixZwpYtWwCorKxk8+bNrF27Fuja+7Ru3ToAxo0bR2lpKUuXLgVg6NChHHbYYSxcuBCA0tJSampqaGhoYPv27QBUV1fT1NREc3MzAOPHj6ekpITly5cDMHz4cEaPHq33Se+T3qc94H3qiLl7hxt0FzMbQTg6neLuCzKWXw2c4+7jO3n8RcD3gBHuvrmTbR8Bdrr7KR1tV1VV5W1/tF0x66Yu76JDcy7r2f2LiMh7zGyxu1flWpf35AZJ79dlZvammY1Jln3VzM7o5KGvAq3AsKzlw4D1Eb96FvDLzgIzUQ+Mi9hOREQkWr6TG1wGXAXcDljGqpeAL3f0WHd/G1gMTMtaNY3Qi7aj3/sRoILcHYByOYrQbCsiItJt8jqnCVwAzHL3h83s2ozljYQhH525EbjbzBYBTyf7GwHcBmBmdwG4e/ZECecDq9x9XvYOkyBfCywjnNM8F/gscFrkcxIREYmSb2geAizNsfwdoF9nD3b3e81sCOFo9aBkXye5+4vJJu8br2lmA4CzgG+0s9u+hFmJyoEdhPA82d0f6aweERGRfOQbmquBSuDFrOUnActjduDutwK3trNuao5l2wiTKrS3vxuAG2J+t4iISFfkG5rfBW4xs/0J5zRrzOzzwD8A53V3cSIiIoUk33GaPzazPoRp8PYnTHTwEnCJu9/bA/WJiIgUjHyPNHH3OcAcMzsQ2MfdN3Z/WSIiIoUn79Bs4+6vdmchIiIiha7T0DSz5wiz+Gwxs+eBdqcQcvcju7M4ERGRQhJzpPlLoCXj596Zd09ERKTAdBqa7j474+drerQaERGRApbvNHq/MbMDciwfaGa/6baqREREClC+E7ZPJczAk20/4IQuVyMiIlLAonrPmlllxt0jzSzzSiMlwHTCZb9ERET2WLFDThoIHYAcmJtj/Q7g4u4qSkREpBDFhuZowrR5q4GPAK9krHsb2Ojurd1cm4iISEGJCs2Mq5DkfdFqERGRPUXM5AanAr9y93eSn9vl7v/ZbZWJiIgUmJgjzfuB4cDG5Of2OKFTkIiIyB4pZnKDfXL9LCIisrdRCIqIiESKPacZRec0RURkTxZ7TjOGzmmKiMgeLa9zmiIiInszBaKIiEgkjdMUERGJpHGaIiIikTROU0REJJJCUEREJFLeoWlmlWZ2l5k1JLe7s663KSIiskfKKzTN7Bzgd8BBwCPJbRiwyMzO7f7yRERECkfs9TTbXAd83d2vz1xoZlcC1wL3dFdhIiIihSbf5tkPAb/Isfw+YGjXyxERESlc+Ybmb4GpOZZPBeZ3tRgREZFClu+E7Y8C3zSzKuDZZNlxwKnANd1enYiISAHZ3Qnbz09umb4P3NrlikRERAqUJmwXERGJpEAUERGJlO+QE8xsEHAicDDQN3Odu3+jm+oSEREpOHmFppkdBzwMtBCGnzQTJjpoAdYCCk0REdlj5ds8+x3gJ0AZ8BbwccIRZwPw7e4tTUREpLDkG5pHAre4uwOtQKm7bwC+ioaciIjIHi7f0Hw74+cNwCHJz9uBEd1SkYiISIHKtyNQI3AssBKYB1xrZsOAc4Hnurc0ERGRwpLvkeY/AS8lP18FvEKY1GAQ75/sQEREZI+S15Gmuzdk/PwKYeiJiIjIXiHvcZoAZnYo8OHk7nJ3X919JYmIiBSmfMdpDgF+BJwCvPveYvs1cJ67b+rm+kRERApGvuc0/x0YC5wA7JfcJgOjgTndW5qIiEhhyTc0pwOz3P1pd9+Z3J4G/i5Z1ykz+5KZrTGzt8xssZmd0MG2U83Mc9wOz9ruNDNbbmYtyb+fy/N5iYiIdCrf0HwFeCPH8jeBTptmzexM4GbgeuBo4BngUTM7uJOHTiRM19d2W5WxzxrgXsJMRUcl/95nZtWd1SMiIpKPfEPzG8BNZlbWtiD5+XvEzTt7BXCHu89x9z+6+8XAy8CFnTxuo7uvz7i1Zqy7DPitu1+X7PM6whjSy6KflYiISIROOwKZ2fOAZywaDaw1s+bkfts8tEMJ5zzb209f4Bjgu1mr5gLHd1JGg5mVAsuBa939txnraghjRTM9Dny5k32KiIjkJab37P3d9LsOBEoI0+9l2gB8op3HtB2F/o5wGbLPA0+a2RR3fyrZZng7+xzeHUWLiIi06TQ03X12bxTSzu9eAazIWFRnZqOAvweeyvmgTpjZ+SSzF40YMYJ58+YBMGbMGAYMGMCSJUsAGDJkCBMnTmTBggUA9OnTh9raWhobG9m6dSsAVVVVbNiwATh0d0qJ1tLSQl1dHQD9+vWjurqa+vp6duzYAUBNTQ1r1qxh/fr1AEyYMIHW1lZWrAgvXVlZGeXl5dTX1wPQv39/qqqqqKuro6WlBYDa2lpWrlzJxo0bAZg0aRItLS2sWhVOH48cOZJhw4bR0BDmtxg4cCCVlZUsXLiQnTt3AjB58mSWLVvGpk3h9HZFRQXbtm1j9eowjHfUqFEMHjyYxsZGAAYNGkRFRQXz58/H3TEzpkyZwpIlS9iyZQsAlZWVbN68mbVr1wJde5/WrVsHwLhx4ygtLWXp0qUADB06lMMOO4yFCxcCUFpaSk1NDQ0NDWzfvh2A6upqmpqaaG4ODSzjx4+npKSE5cuXAzB8+HBGjx6t90nvk96nPeB96oiFC5bkx8w+DkwgNNsuc/d5EY/pS+gwdLa735ex/AfAJHefEvm7/xk4y90/nNz/M/B9d/9OxjZ/D3zZ3Q9pZzcAVFVVedsfbVfMuqnLu+jQnMt6dv8iIvIeM1vs7lW51uXVEcjMysxsEfAE4XJgXyM0l9abWYdXOXH3t4HFwLSsVdMIvWhjHUVotm1T1w37FBER6VS+0+j9K+E6mmPdfQ2AmY0B7knWnd7J428E7k6C92ngAsIlxW5L9nUXgLvPSO5fBqwFlhHOaZ4LfBY4LWOfNwMLzOxrwIPA54CPAbV5PjcREZEO5Rua04CpbYEJ4O6rzewS4MnOHuzu9yZT8V1FGG+5FDjJ3V9MNsker9kX+A5QDuwghOfJ7v5Ixj6fMbOzgGsJw15eAM509/o8n5uIiEiHdmfC9lwnQaNPjLr7rcCt7aybmnX/BuCGiH3eT/f18hUREckp38kNngS+b2Yj2xYks/ncRMSRpoiISDHLNzQvAT4ArDazF83sRUJz6AeSdSIiInusfJtnNwEfAaYCbZOm/9Hd/7s7ixIRESlE0aFpZiXA60CFuz9BGHYiIiKy14hunk0mSX+R0KNVRERkr5PvOc1/Ab5lZgf2RDEiIiKFLN9zml8hXOWk2cyayLq2prsf2V2FiYiIFJp8Q/N+wphM64FaREREClpUaJrZ/oSZeT4L7EsYk3mxu7/ac6WJiIgUlthzmrOBmcDDwM8I17/8tx6qSUREpCDFNs+eCnzB3X8OYGY/AZ42s5KkV62IiMgeL/ZIcyQZF31290XATsIVSkRERPYKsaFZArydtWwnuzfhu4iISFGKDT0D7jGzloxl+wFzzOzNtgXufkp3FiciIlJIYkPzzhzL7unOQkRERApdVGi6+9/2dCEiIiKFLt9p9ERERPZaCk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFICk0REZFIvR6aZvYlM1tjZm+Z2WIzO6GDbU81s7lm9oqZbTOzejM7JWubmWbmOW779fyzERGRvUmvhqaZnQncDFwPHA08AzxqZge385ApwG+Ak5PtHwEeyBG0bwIHZd7c/a3ufwYiIrI369PLv+8K4A53n5Pcv9jMPgVcCFyZvbG7X5q1aLaZnQx8FnjqLzf19T1Qr4iIyC69dqRpZn2BY4C5WavmAsfnsasBwJasZf3M7EUzazKzX5vZ0V0oVUREJKfePNI8ECgBNmQt3wB8ImYHZnYRUA7cnbF4BXAesIQQqJcCT5tZhbuvyrGP84HzAUaMGMG8efMAGDNmDAMGDGDJkiUADBkyhIkTJ7JgwQIA+vTpQ21tLY2NjWzduhWAqqoqNmzYABwaU/5ua2lpoa6uDoB+/fpRXV1NfX09O3bsAKCmpoY1a9awfn042J4wYQKtra2sWLECgLKyMsrLy6mvrwegf//+VFVVUVdXR0tLCwC1tbWsXLmSjRs3AjBp0iRaWlpYtSq8hCNHjmTYsGE0NDQAMHDgQCorK1m4cCE7d+4EYPLkySxbtoxNmzYBUFFRwbZt21i9ejUAo0aNYvDgwTQ2NgIwaNAgKioqmD9/Pu6OmTFlyhSWLFnCli3he1FlZSWbN29m7dq1QNfep3Xr1gEwbtw4SktLWbp0KQBDhw7lsMMOY+HChQCUlpZSU1NDQ0MD27dvB6C6upqmpiaam5sBGD9+PCUlJSxfvhyA4cOHM3r0aL1Pep/0Pu0B71NHzN073KC7mNkIoBmY4u4LMpZfDZzj7uM7efxphLA8091/1cF2JcAfgN+6+yUd7bOqqsrb/mi7YtZNXd5Fh+Zc1rP7FxGR95jZYnevyrWuNzsCvQq0AsOylg8DOjwfaWanEwJzRkeBCeDurUADMG73SxUREXm/XgtNd38bWAxMy1o1jdCLNiczO4MQmDPd/f7Ofo+ZGXAk8PLuVysiIvJ+vd179kbgbjNbBDwNXACMAG4DMLO7ANx9RnL/LEJgfgVYYGbDk/287e6bk23+GXgWWAUMBC4hhOaFvfScRERkL9Groenu95rZEOAqwnjKpcBJ7v5iskn2eM0LCDXelNzazAemJj8fANwODAdeB34PTHb3Rd3+BEREZK/W20eauPutwK3trJva0f12HnM5cHl31CYiItIRzT0rIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEpIiISSaEp0R577DHGjx/P2LFj+da3vpV2OXlR7ekp5vpVe3oKtX6FpkRpbW3loosu4tFHH2X58uX87Gc/Y/ny5WmXFUW1p6eY61ft6Snk+hWaEmXRokWMHTuWMWPG0LdvX8466yweeuihtMuKotrTU8z1q/b0FHL9Ck2J0tzczMiRI3fdLy8vp7m5OcWK4qn29BRz/ao9PYVcv0JTREQkUq+Hppl9yczWmNlbZrbYzE7oZPspyXZvmdlqM7ugq/uU/JWVlbFu3bpd95uamigrK0uxoniqPT3FXL9qT08h19+roWlmZwI3A9cDRwPPAI+a2cHtbD8aeCTZ7mjgm8D3zey03d2n7J5jjz2WVatWsWbNGt5++21+/vOfc8opp6RdVhTVnp5irl+1p6eQ6+/Ty7/vCuAOd5+T3L/YzD4FXAhcmWP7C4CX3P3i5P4fzawa+Arwy93cp+yGPn36cMsttzB9+nRaW1s577zzmDhxYtplRVHt6Snm+lV7egq5fnP33vlFZn2BN4Gz3f2+jOU/ACa5+5Qcj1kAPO/uF2Us+yvgp8D+gOW7z0xVVVXe0NDQtScGzLqpy7vo0JzLenb/IiLyHjNb7O5Vudb1ZvPsgUAJsCFr+QZgeDuPGd7O9n2S/e3OPkVERHZLbzfPps7MzgfOT+5uN7MVKZRxIPBq7Mb/fnkPVpK/vGovQMVcv2pPTzHXr9rzd0h7K3ozNF8FWoFhWcuHAevbecz6drbfmezP8t2nu98O3B5ddQ8ws4b2Dv0LXTHXDsVdv2pPTzHXr9q7V681z7r728BiYFrWqmmEHq+51LWzfYO7v7Ob+xQREdktvd08eyNwt5ktAp4m9I4dAdwGYGZ3Abj7jGT724Avm9lNwA+BjwIzgbNj9ykiItJdejU03f1eMxsCXAUcBCwFTnL3F5NNDs7afo2ZnQT8f8IQkpeAS9z9l3nssxCl2jzcRcVcOxR3/ao9PcVcv2rvRr025ERERKTYae5ZERGRSApNERGRSArNFJiZpV2DiIjkT6GZAteJ5FToy4qIdJU6AvUSMysFjgQ+B7wOLAP+BKxz9zfMzBSmvUOvde8zs33c/d2069gbZb72+tvvOoVmLzGzfwVOBV4GBgGjCENoHgRucvfVqRUXycxKCAfKRfXhZ2b9gcnAWcAWYBWwEljq7i+lWVssM+sDvFtsr70UBjMb4O7b0q5jT6DQ7AVmNgF4FjgdWOzum8zsQ8AXgL8jTC5/KTCnEL8Fmtkx7r44a1kJ4UO84OrNZmZ3EkJzFeELy0hCeP6B8Jr/Jr3qOmZmte6+MGtZ0QSomY0EzgOOBV4AVhBaWZ5z9y2FeuSTWVcxvd6ZzOzDhEsnHk1o1fozsARY4O7rkm0K8vUvZArNXmBm/wh8yt0nJ/f7uPvOjPXXE45CP15oRz5mNo7wQbccmAvc7e6/z1hvhEkyjgb+kExtWDCSLyz1hKkVf+furWb2QeAM4ItAFfAN4FoK7EuAmR1OeN3fAB4Gvu/uT2esN2BfYDqwyN2zr/aTquQi8r8E+gG/AyYR5oXeBDwF3OjuL6RXYfuSL7UfdvcFGcuMcFWl1kL6O8nFzA4FHiFc8elp4HDCl/NSQoD+u7vPTa/C9pnZMML/10fcfXMH2+3r7u/0XmWBOgL1jj8CB5nZWAB332lmfcxsv2T9HMJ1QU9Pq8AOnE04QngCOA74tZk9a2b/YGYjkw+PoYQj6aEp1tmeTwJL3P3ZJDD7uvvr7j7H3auBiwjheWgBfhCeSjgyuB4oA+ab2Xoz+66ZtdV7APAQ0De9Mtv1VaAZ+Ji7z3D3SqAG+AnwaeBZM/tMmgV24BpgXvJ6/8DMJniw093dzPYxs4PN7K+SVpdC8xXCKYiT3f1Kd/8c8FngXwnh+YCZfSHF+jpyFXAX8Cczu8/MTkr6hOxiZgcDl2Yv7w0Kzd6xgHBlll+b2RlmVpr853sLwnSBhG+wLWkW2Y7xhG+s3wZmAf9ImKrwXKDOzH5FmBf4j+7elFqV7VsCHGJm/wfChQOSLyz9kvX3AS/yl/MZF4oywlHCD4HPAB8H/gM4GVhlZs8BPye89utSq7J9E4H57r7ezPZNWlj+7O7fdvdDgP8GLkgCqNB6Nh9LmL/634BaYKmZ/cnM/tHMBidNtX8DfNvdW9MstB2HAI3uvs3MSsysxN03uPsdSYvXbcAsM9s/5TpzqSJ83vw/wumUB4A1ZvZ9M6tMtpkFXODuvf+Z6e669cKNMIn8vbzXzHkt4UPwMOBm4BXgA2nXmVVzH+CvgSuzlg8mHDF8GfgF8C7whbTrbec57Ec4Sn6ZMJl/vxzb/AG4KO1as2oqAU4CvpS1vC9hjuZPE1oo3gX+Nu1623kO1ySv7YCMZfu2vQeEMHoBOC7tWrPqPgR4nHBxiH0IX16mAz8gnBd8l/BlZjNwedr1tvMcLk1qPTzrb6dv8vMEYA2hFSD1ejNqHEH4Int+cr8PoWn5q8nfUivwPOGUxaVp1Khzmr0omVj+04T2+jGEo7hBwHzgh+7+8xTL61SucwhmdipwP9Df3d9Mp7KOJUeV1xGav3cQmpIfArYDf0v48B5fqPVD7iEbZjYdeJQCfe3N7BjgV4Rr217j7v+Vtf5wwgfh4EKq38wGEoaGrXX3+RnL+xE+1I8BvkT4uxng7jtSKbQDyfnk/yQ03/+Lu/9H1vpJQCNwQIG99h8gHExsdPf6rHX7E86Lf4Vw6iKV116h2cPMrBwYm9x9g3CkuYMQmv0J5zJf9Q5OeKelvbF1SW/CVnd3M/suUOXuU3u9wAhJs1RrMuykFjiBcG62knA099+EHrSPpljm+yTNlZbr9c/Y5hqgxt2n91phkdp6ZSbn8W8gvOZtHYAeJRzpnA6scfcz0qu0Y22dfzyj416y/CdAWaH+3UMYZgJ8EziHcIQ/l/D3Ponwf+EP/t5lGAtSrt69ZnYHoQ/CCanUpNDsOWZ2IaG7fQUhHFcDTcBvgfu9MM9D7ZIR+EZoklrh7usz1hvhXFuzu/8unSrzY2Z9gQ8RvrjsB7zu7m+kW9XuMbOpwCvuvizlUjqUdHj7BKGF5SOEc52bCc3L93hhX8YP+Mues4TewAuAb3rGZQoLRVLrPsmXxf2AIwhDrj5O+LK4BrgH+M/M/8+FwMz2IYwFzxlMydH+Q8C/ufsDvVpcWw0KzZ6RNMX+CfgeoTPBhwgfHFMJ37Lbrg26vBDHSmUF/huE59JEaNp80N1XpFhep8ysX2bTTWf/GQtJdu3FJnmtP0P4m+9HOG/5lLu/nnyIO6Fp7dUUy8wpq/b9Cb1/57v7xoxtSoFPuPvD6VSZP8sYV21mH3T319OuaXeY2b6Elq261Googs+QomRmFwPnehjWkL2ultBsUgZ8pNA+PDoJ/A8TwvPyJPBLvMB6D5rZIEKv2YcJ36ifaQvLzPC0MPi7yQtoppROas8ccP9h4GV3fy2tWnNJmgR/BHyM0DrRTGipeJPQNHiPu69Kti2oqfVy1N5ECPi3CP0O7nb3/0mvwo4lgTIaeNFz9CotxC/nbTqrvZBoyEnPeRsYkJxwx8xKk6ZBPMzwcg7hP+Mn0yuxXX8NrHT3a919k7v/j7vf4u6nE2Yw2p8wfObAQgvMxLmEQfTHEJrR/mRm3zCz8e7e9m17JPBTwheCQtJR7W2B2Vb74PTKbNclhA5uJ7n7MMLf0veA5wid4G60MHEAhRSYiezazwFuIvTW/CRwQ1vtBeoi4PfAbWb2f81seOYY0uTvfqCZnZiEVCHpsHYIHbTM7OS2z9G06EizhyRHa/MJzZmXtx3N2F9OnvwMoanzhvQqfT8z+ztCl/Uz3H1p0hzlnsz2Y2Fg8WPAte7+0xRLzcnM5hDOPV1NGMh9NqHTyRjCzDT/AQwB/snd+6dVZy7FXDuAmT0FPODuN2YtLwE+SjiSe8HdP5VGfR0p5toBzKyO8EW8D3A8YcjJA4RetM8nzeMXADPd/bj0Kn2/YqpdR5o9IDkRv5kws8U04CUz+1HSBR8LM4mcSzhB/4v0Km3X/YTmqcssTPTc4mFSgH0A3P3PwGtAeYo15pQE/HLC1WM2uvtz7n4lYcD09GTdNYQhKN9OrdAcirl22NWreilwWtsRmYWB9fu4e6uHKekuAMrNrCLNWrMVc+2wa9q/dwg9wU8gjDX9EeHofgHwGzP7KnAZYVrJglF0tXsBDGjdU2+EMVJHEv6zPU4YF7idcL7wBcLYtdTrzKrZkttnCTPlbCP8AR9D+JJ1MKEJcRswKu1623kOpcDw5OcSQk/CzPVTCV8KytOudU+qPanvuORv+9vAsBzrRyb/B8rSrnUPq/0g4HJgeo51RxMmZtiU/O0UVP3FVruaZ7uZmQ0FPk+YAupVwtCG14CFhKbafQnDOB5z95UpldkpMzuAEJDHEwZ6fzRZtZ4Qqne7+zWpFNeBjPGBY4A3PGMS84x1VxOaecakV+n7FXPtsKuT1T6ECSOuJzS1/ZIwE9afCV8gPw1McPdj06ozl2KuvU0yHMPd/a2ktQt476L3ZnYd4Xzt0WnV2J5iql2h2c0sDLydSJgJZTOhs8YRhOnyNgJXedZMF4Wi2AM/o/4rCK/1TsL0efcRxqS9kfyHnAW85O6/Tq3YLMVcey7Jl66ZhI5ARxFaJt4inJf9ZqH+H4Cirz1nD1kLs+k0Aj9294Jr2ofiqV2h2Y2SD7VthG9ECzKWHQxUE66mMYbQwaYxtULbUcyBD+3WfzRh7som4DteuJdDuoMirR12TT23LfNDLzl6248w89UkwtFzwf39FHPtkLv+HNvsB5wJ/MwL6PJ9xVi7QrMbmdlEwlUnZrn7sznWlxImen7CQwePgrEHBH579ZcTzlXNInQwOLvQ6i/m2tuY2Q+BRcntRXffmmObQV6AF54u5tohuv4DvMDG9EKR1p72SdU96UaY/eRJoA4YR1YnjmSbiwlzPqZeb1ZdEwnj0XJecYLQQaWB0DyVer27UX/fQq2/mGtP6jub0EnjNcJUkT8kTKg9lveuaNIfeBA4Iu1695TaO6j/c8ChGfW3TT03Ke1694TadaTZzczsOMK16nYQ/gieBLa4+/akbf4u4C13PzfFMt8nORH/a8LEBTMI49Gyr6pxMeESYEf1foUdK+b6i7l2+IuxpTcQAudvCB98KwjXYn2SMGnAze5eUBfLLubaobjrL9baFZo9wMIsQF8HTiHM21pHuF7mJwidO77o7s+nV2FuxRr4bYq5/mKtPRnf+A/AQHf/WsbyiYRm5dMJ5wYPAO509y+kUWcuxVw7FHf9RV27QrPnJD0iTyaMeXyLMHj6Pi/s+SuLMvDbFHP9xVq7hflyh7n7/1iY4uwdz/hgMbMzgZ8Ble7+h5TKzKmYa4firr9Ya1do9hIrsMmpO1OMgZ+pmOsv5trbJL1PzcPlqWYRmtj2T7uuGMVcOxR3/cVQu0JTOlVsgZ+tmOsv5trbmNkVhAs5fyftWvJVzLVDcddfqLUrNEWkR1m4okZrMYZ/MdcOxV1/odau0BQREYmkq5yIiIhEUmiKiIhEUmiKiIhEUmiKiIhEUmiKiIhEUmiKiIhE+l/k6xfZRpU5QAAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "execution_count": 6
    }
   ],
   "metadata": {
    "scrolled": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### Run on QPU\n",
    "\n",
    "#### Note: The time required to run a circuit on the QPU may vary depending on current queue times."
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "source": [
    "# Get Quantinuum's QPU backend:\n",
    "qpu_backend = provider.get_backend(\"quantinuum.qpu.h1-1\")"
   ],
   "outputs": [],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "source": [
    "# Submit the circuit to run on Azure Quantum\n",
    "job = qpu_backend.run(circuit, count=500)\n",
    "job_id = job.id()\n",
    "print(\"Job id\", job_id)\n",
    "\n",
    "# Monitor job progress and wait until complete:\n",
    "job_monitor(job)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Job id ba839b3e-fc4e-11eb-9d2c-00155df03c4e\n",
      "\r\n",
      "Job Status: job has successfully run\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "source": [
    "# Get the job results (this method also waits for the Job to complete):\n",
    "result = job.result()\n",
    "print(result)\n",
    "counts = {format(n, \"03b\"): 0 for n in range(8)}\n",
    "counts.update(result.get_counts(circuit))\n",
    "print(counts)\n",
    "plot_histogram(counts)"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "Result(backend_name='quantinuum.sim.h1-1sc', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='ba839b3e-fc4e-11eb-9d2c-00155df03c4e', success=True, results=[ExperimentResult(shots=1024, success=True, meas_level=2, data=ExperimentResultData(counts={'011': 16, '010': 5, '001': 1, '000': 500, '111': 471, '101': 6, '100': 17, '110': 8}, probabilities={'011': 0.015625, '010': 0.0048828125, '001': 0.0009765625, '000': 0.48828125, '111': 0.4599609375, '101': 0.005859375, '100': 0.0166015625, '110': 0.0078125}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit'))])\n",
      "{'000': 500, '001': 1, '010': 5, '011': 16, '100': 17, '101': 6, '110': 8, '111': 471}\n"
     ]
    },
    {
     "output_type": "execute_result",
     "data": {
      "text/plain": [
       "<Figure size 504x360 with 1 Axes>"
      ],
      "image/png": "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"
     },
     "metadata": {},
     "execution_count": 9
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "source": [
    "# Print package versions used in this notebook\n",
    "import qiskit\n",
    "print('\\n'.join(f'{m.__name__}=={m.__version__}' for m in globals().values() if getattr(m, '__version__', None)))"
   ],
   "outputs": [
    {
     "output_type": "stream",
     "name": "stdout",
     "text": [
      "qiskit==0.18.0\n"
     ]
    }
   ],
   "metadata": {}
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "source": [],
   "outputs": [],
   "metadata": {}
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}